

https://leetcode.cn/problems/longest-increasing-subsequence/description/
//class Solution {
//public:
//    int lengthOfLIS(vector<int>& nums)
//    {
//        int n = nums.size();
//        vector<int> res;
//        res.push_back(nums[0]);
//        for (int i = 1; i < n; i++)
//        {
//            if (nums[i] > res.back())
//            {
//                res.push_back(nums[i]);
//            }
//            else
//            {
//                int left = 0, right = res.size() - 1;
//                while (left < right)
//                {
//                    int mid = (left + right) >> 1;
//                    if (res[mid] < nums[i])   left = mid + 1;
//                    else right = mid;
//                }
//                res[left] = nums[i];
//            }
//        }
//        return res.size();
//    }
//};


https://leetcode.cn/problems/wiggle-subsequence/description/
//class Solution {
//public:
//    int wiggleMaxLength(vector<int>& nums)
//    {
//        int n = nums.size();
//        if (n < 2) return n;
//
//        int ret = 0;
//        int right = 0, left = 0;
//        for (int i = 0; i < n - 1; i++)
//        {
//            right = nums[i + 1] - nums[i];
//            if (right == 0) continue;
//            if (left * right <= 0) ret++;
//            left = right;
//        }
//        return ret + 1;
//    }
//};